import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export default new Vuex.Store({
	state: {
		token: null,
		tempData: {},
		user: null, // 用于存储用户信息
	},
	mutations: {
		SET_TOKEN(state, token) {
			state.token = token;
		},
		// 更新 tempData
		setTempData(state, data) {
			state.tempData = data;
		},
		// 清空 tempData
		clearTempData(state) {
			state.tempData = {};
		},
		setUser(state, user) {
			state.user = user;
		},
	},
	getters: {
	    getUserData: state => state.user
	},
	actions: {
		fetchUser({
			commit,
			state
		}, payload) {
			const token = payload.token; // 从传递的对象中取出 token
			return new Promise((resolve, reject) => {
				uni.request({
					url: 'https://juanjiahui.guguan.net/web/center',
					method: 'GET',
					header: {
						'token': `${token}`, // 使用传递的 token
					},
					success: (res) => {
						const userData = res.data.data;
						if (userData.phone > 0) {
							commit('setUser', userData);
							resolve(userData);
						} else {
							reject(new Error('User data is invalid'));
						}
					},
					fail: (error) => {
						reject(error);
					}
				});
			});
		},
		async silentLogin({
			commit
		}, code) {
			try {
				// 调用登录接口，获取 token 和用户信息
				const response = await uni.request({
					url: 'https://juanjiahui.guguan.net/web/silentLogin',
					method: 'POST',
					data: {
						code
						// 这里可以传递一些静默登录所需的参数
					},
				});
				console.log('接口返回数据:', response[1]);
				const {
					token
				} = response[1].data.data;
				// 保存 token 到 Vuex
				commit('SET_TOKEN', token);
				console.log("token为：" + token);
				// 将 token 作为对象传递给 fetchUser
				// await this.dispatch('fetchUser', {
				// 	token
				// }, {
				// 	root: true
				// });
			} catch (error) {
				console.error('静默登录失败', error);
			}
		},
		// 异步更新 tempData
		updateTempData({
			commit
		}, data) {
			commit('setTempData', data);
		}
	},
});